;#############################
;命令：
;nasm -f elf64 day9_0call_0sinx_0base.asm -o main.o && gcc main.o -o main -lc -lm -no-pie && ./main
;输出：
;sin函数的计算结果是0.500000
;sin函数的计算结果是1.000000
;#############################
extern printf
extern sin

section .data
	;x1 = pi / 6 = 3.141592653589793 / 6
	x1: dq 0.523598775598299
	;x2 = pi / 2 = 3.141592653589793 / 2
	x2: dq 1.5707963267948965
	msg: db `sin函数的计算结果是%f\n`, 0

section .text
	global main

main:
	push rbp
	mov rbp, rsp

;############################
	movsd xmm0, [x1]
	mov eax, 1
	call sin

	;返回值存放在了xmm0
;############################

;##########################################
	mov rdi, msg
	;打印浮点数时
	;rdi存放语句
	;正常情况下rsi存放int数就好
	;由于是double数
	;存放在xmm0中就好
	;所以说下面这一句话是多次一举
	;movq rsi, xmm0
	;eax中的值表示使用了几个xmm寄存器
	;这里使用了一个
	mov eax, 1
	call printf

;##########################################

;#####################################
	;调用sin函数
	movsd xmm0, [x2]
	mov eax, 1
	call sin

	;打印
	mov rdi, msg
	mov eax, 1
	call printf

;#####################################

	mov eax, 0
	leave
	ret
